package br.com.principal.trata_arquivo;

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Formatter;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Arquivo {

	/**
	 * 
	 * @throws FileNotFoundException
	 */
	public void lerArquivo() throws FileNotFoundException {

		Scanner scanner = new Scanner(new FileReader("doc/arquivo.txt"))
				.useDelimiter("\\||\\n");
		while (scanner.hasNext()) {
			String nome = scanner.next();
			String cidade = scanner.next();
			String compras = scanner.next();
			System.out.println(nome);
			System.out.println(cidade);
			System.out.println(compras);
		}
	}

	/**
	 * 
	 * @param nomeArquivo
	 * @throws FileNotFoundException
	 */
	public void lerArquivo(String nomeArquivo) throws FileNotFoundException {

		Scanner scanner = new Scanner(new FileReader("doc/" + nomeArquivo))
				.useDelimiter("\\||\\n");
		while (scanner.hasNext()) {
			String nome = scanner.next();
			String cidade = scanner.next();
			String compras = scanner.next();
			System.out.println(nome);
			System.out.println(cidade);
			System.out.println(compras);
		}
	}

	/**
	 * 
	 * @param nomeArquivo
	 *            <p>
	 *            Cria um arquivo
	 *            </p>
	 */
	public void criarArquivo(String nomeArquivo) {
		String nomeArq = "doc/" + nomeArquivo;
		// tentando criar arquivo
		try {
			Formatter saida = new Formatter(nomeArq);
			// saida.format(conteudo);
			saida.close();
			JOptionPane.showMessageDialog(null, "Arquivo '" + nomeArq
					+ "' criado!", "Arquivo", 1);
		}
		// mostrando erro em caso se nao for possivel
		// gerar arquivo
		catch (Exception erro) {
			JOptionPane.showMessageDialog(null, "Arquivo nao pode"
					+ " ser gerado!", "Erro", 0);
		}
	}

	/**
	 * 
	 * @param nomeArquivo
	 * @param conteudo
	 * 
	 *            Cria um arquivo com conteúdo
	 */
	public void criarArquivo(String nomeArquivo, String conteudo) {
		String nomeArq = "doc/" + nomeArquivo;
		// tentando criar arquivo
		try {
			Formatter saida = new Formatter(nomeArq);
			saida.format(conteudo);
			saida.close();
			JOptionPane.showMessageDialog(null, "Arquivo '" + nomeArq
					+ "' criado!", "Arquivo", 1);
		}
		// mostrando erro em caso se nao for possivel
		// gerar arquivo
		catch (Exception erro) {
			JOptionPane.showMessageDialog(null, "Arquivo nao pode"
					+ " ser gerado!", "Erro", 0);
		}
	}

	/**
	 * 
	 * @param nomeArquivo
	 * @param Pessoa
	 */
	public void criarArquivo(String nomeArquivo, Pessoa pessoa) {
		String nomeArq = "doc/" + nomeArquivo;
		// tentando criar arquivo
		try {
			Formatter saida = new Formatter(nomeArq);
			saida.format(pessoa.getNome() + "|" + pessoa.getCidade() + "|"
					+ pessoa.getIdade());
			saida.close();
			JOptionPane.showMessageDialog(null, "Arquivo '" + nomeArq
					+ "' criado!", "Arquivo", 1);
		}
		// mostrando erro em caso se nao for possivel
		// gerar arquivo
		catch (Exception erro) {
			JOptionPane.showMessageDialog(null, "Arquivo nao pode"
					+ " ser gerado!", "Erro", 0);
		}
	}

	public void inserirInformacaoNoArquivo(String nomeArquivo, Pessoa pessoa) {
		String nomeArq = "doc/" + nomeArquivo;
		
		try {
			// O parametro é que indica se deve sobrescrever ou continua no
			// arquivo.
			FileWriter fw = new FileWriter(nomeArq, true);
			BufferedWriter conexao = new BufferedWriter(fw);
			conexao.write(pessoa.getNome() + "|" + pessoa.getCidade() + "|"
					+ pessoa.getIdade());
			conexao.newLine();
			conexao.close();
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "Arquivo '" + nomeArq
					+ "' criado!", "Arquivo", 1);
		}
	}

}
